/************************************************************************/
/* Bluteooth Test           The.Berlin.Factor                 Juni 2003 */
/************************************************************************/

#ifndef __CNmeaParser_H__
#define __CNmeaParser_H__

#include <E32Base.h>



// Einfacher Parser fuer das Verarbeiten von NMEA Messages.
class CNmeaParser : public CBase {

public:

	// Initialisiert den Parser mit einer neuen NMEA Message. Dabei darf
	// die uebergebene Nachricht solange nicht veraendert werden, wie
	// mittels #GetNextTokenInto auf sie zugegriffen wird!
	void SetData( TDesC8 & aNmeaMessage );

	// Kopiert das naechste Token (also die Elemente zwischen den Kommas
	// der Message) in den angegebenen Buffer. Ist das Ende der Nachricht
	// erreicht, bleibt der Puffer leer.
	void GetNextTokenIntoL( TDes8 & aBuffer );

	// Ueberspringt das naechste Token der Message.
	void SkipNextTokenL( );

	// Liest die beiden folgenden Token und interpretiert sie als Winkel-
	// und North/South-Angabe.
	//TReal GetNextTokensAsLatitudeL( );
    TInt GetNextTokensAsLatitudeL( TReal & latitude );

	// Liest die beiden folgenden Token und interpretiert sie als Winkel-
	// und East/West-Angabe.
	//TReal GetNextTokensAsLongitudeL( );

    TInt GetNextTokensAsLongitudeL(TReal & longitude);

	// Returns the next token interpreted as a TInt value.
	TInt GetNextTokenAsIntL( );

	// Returns the next token interpreted as a TReal value.
	TReal GetNextTokenAsRealL( );

	// Entfernt die interne Referenz auf die in #SetData uebergebene
	// Message.
	void ClearData( );


private:

	// Enthaelt den Pointer auf die aktuell (mit #SetData) gesetzte
	// Message.
	TDesC8* iMessage;

	// Enthaelt die aktuelle Parse Position innerhalb der aktuellen
	// Message.
	TInt iParsePosition;



};

#endif
